.TITLE TTMIS .IDENT /04.01/ ; ; Copyright (c) 1995-1999 by Mentec, Inc., U.S.A. ; All rights reserved ; ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED ; OR COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ; ; 23-JAN-78 PETER WANNHEDEN ; ; PREVIOUSLY MODIFIED BY: ; ; C. F. SPITZ ; D. R. DONCHIN ; ; MODIFICATIONS: ; ; S. C. ADAMS 18-MAY-85 04.01 ; SA381 -- MOVE TO MAP5.6 ; ; ;+ ; COMMON MULTIPLEXER INTERRUPT SERVICE ROUTINES. ; USED BY FOLLOWING CONTROLLERS: DH, DJ, DZ. ;- ; ; .IF DF T$$MUX .MCALL UCBDF$,SCBDF$ .IF DF R$$MPL .MCALL KRBDF$ KRBDF$ ;DEFINE KRB SYMBOLS .ENDC ;R$$MPL UCBDF$ ;DEFINE UCB SYMBOLS SCBDF$ ;DEFINE SCB SYMBOLS .PSECT MAP5.6 .IF DF D$$H11!D$$J11!D$$Z11 ; ; ;+ ; MUXINP - INPUT INTERRUPT SERVICE FOR MULTIPLEXERS. ; ; INPUT: ; R3 CSR ADDRESS ; R4 KRB ADDRESS (RSX-11M+) ; R4 ADDRESS OF UCB LIST (RSX-11M) ; ; ALTERNATE ENTRY - MUXIN1. ; ; INPUT: ; R3 CSR ADDRESS ; R4 KRB ADDRESS (RSX-11M+) ; R4 ADDRESS OF UCB LIST (RSX-11M) ; R5 CHARACTER + STATUS FROM SILO ; CC-N 1 IF R5 CONTAINS VALID CHARACTER ; ; OUTPUT FROM BOTH: ; SILO EMPTIED. IF TRANSMIT READY IS SET IN CSR, ; A RETURN TO CALLER IS MADE WITH R3 AND R4 UNCHANGED. ; ELSE A RETURN TO CALLER'S CALLER IS MADE. ; ; REGISTERS ALTERED: R2,R5 ;- ; ; MUXIN1::MOV R5,-(SP) ;;;SAVE CHAR SWAB R5 ;;;GET LINE NUMBER IN LOW BYTE CALL MUXUCB ;;;GET UCB IN R5 MOV (SP)+,R2 ;;;RETRIEVE CHAR + STATUS BCS MUXINP ;;;BAD LINE - IGNORE CHARACTER .IF DF R$$MPL MOV R4,-(SP) ;;;OK - SAVE KRB ADDRESS CALL ICHAR1 ;;;DO COMMON INPUT INTERRUPT PROC. MOV (SP)+,R4 ;;;RESTORE KRB ADDRESS MOV @R4,R3 ;;;RESTORE CSR ADDRESS .IFF MOV R3,-(SP) ;;;SAVE CSR MOV R4,-(SP) ;;;SAVE ADDR OF UCB LIST CALL ICHAR1 ;;;DO COMMON INPUT INTERRUPT PROC. MOV (SP)+,R4 ;;;RESTORE ADDR OF UCB LIST MOV (SP)+,R3 ;;;RESTORE CSR .ENDC ;R$$MPL MUXINP::MOV 2(R3),R5 ;;;GET NEXT CHARACTER FROM SILO BMI MUXIN1 ;;;OK - JUMP ; ; SILO IS NOW EMPTY. SEE IF CONTROLLER IS READY TO TRANSMIT ; TST @R3 ;;;XMIT RDY SET? BMI 10$ ;;;Y - RETURN TST (SP)+ ;;;N - POP 1.ST RETURN ADDRESS 10$: RETURN ;;;RETURN .ENDC ;D$$H11!D$$J11!D$$Z11 ; ; ;+ ; MUXUCB - GET UCB FROM LINE NUMBER. ; ; INPUT: ; R4 KRB ADDRESS (RSX-11M+) ; R4 ADDRESS OF UCB LIST (RSX-11M) ; R5 LINE NUMBER IN BITS 0-3 ; ; OUTPUT: ; R2 LINE NUMBER * 2 ; R5 POINTER TO U.TSTA (IF VALID LINE) ; CC-C 0 IF VALID LINE ; 1 IF INVALID LINE ; ; REGISTERS ALTERED: R2,R5 ;- ; ; MUXUCB::BIC #^C17,R5 ;;;CLEAR IRRELEVANT BITS .IF DF R$$MPL MOV R5,R2 ;;;COPY LINE NUMBER ASL R2 ;;;MAKE INDEX FOR UCB TABLE CMPB K.HPU(R4),R5 ;;;LINE IN USE? BLO 10$ ;;;N - EXIT WITH CC-C SET MOV R4,R5 ;;;GET KRB ADDRESS ADD K.OFF(R4),R5 ;;;ADD OFFSET TO UCB LIST ADD R2,R5 ;;;ADD LINE NUMBER * 2 - YIELDING ;;;POINTER TO UCB POINTER MOV @R5,R5 ;;;GET UCB POINTER ADD #U.TSTA,R5 ;;;POINT TO U.TSTA AND CLEAR CC-C 10$: RETURN ;;;RETURN .IFF ;R$$MPL ASL R5 ;;;GET UNIT NUMBER * 2 MOV R5,R2 ;;;SAVE IT ADD R4,R5 ;;;GET UCB POINTER MOV (R5),R5 ;;;POINT TO UCB BEQ 10$ ;;;LINE NOT IN USE ADD #U.TSTA,R5 ;;;POINT TO U.TSTA AND CLEAR CC-C RETURN ;;;RETURN 10$: SEC ;;;SET CC-C RETURN ;;;RETURN .ENDC ;R$$MPL .ENDC ;T$$MUX ; ; .END